GolaemΒΆ

Guerilla Render can render the Golaem procedural crowd.

An example of a simple crowd rendered using Golaem Crowd.

Installation

Linux

Guerilla uses the glmCrowdGuerillaPlugin.so DSO. The Golaem bin and procedurals directories should be added to the LD_LIBRARY_PATH variable before running "guerilla" or "render".

Windows

Guerilla uses the glmCrowdGuerillaPlugin.dll DLL. The Golaem bin and procedurals directories should be added to the PATH variable before running "guerilla" or "render".

Load a Golaem crowd into Guerilla

In the Create menu, click the Create Golaem item. This create a NewGolaem node in the scene.

When you have a Golaem simulation cache ready, locate the .gscs file corresponding to this cache. You will find a collection of .gscf files, one per simulated frame. For instance:

/my/simulation/cache/testGuerilla.crowdField1.gscs
/my/simulation/cache/testGuerilla.crowdField1.1.gscf
/my/simulation/cache/testGuerilla.crowdField1.2.gscf
/my/simulation/cache/testGuerilla.crowdField1.3.gscf
...
Setup the Goalem attributes
  • Crowd Fields: a list of semicolon separated field names (crowdField1 in the previous example)
  • Cache Name: the cache name (testGuerilla in the previous example)
  • Cache Directory: the directory where resides the cache (/my/simulation/cache/ in the previous example)
  • Characters: the .gcha character file to bind to this simulation cache.

Golaem Shading

Shader assignement

The Golaem procedural uses the RenderGraphs to assign shaders and attributes to the procedural geometry. To setup the look of a Golaem procedural:

  • Create a RenderGraph
  • Set RenderGraph -> Apply On to tags
  • Set RenderGraph -> Tags to Golaem

The RenderGraph for Golaem is set to apply on the Golaem tag.

The Golaem procedural uses RenderGraph paths in the form |entity name|mesh name, as in |entity1213001|LightArmor_cuirass. You can use the RenderGraph path node to select a particular piece of the character.

For instance, the following scene contains soldiers wearing armors. The armor parts are named |entity####|LightArmor_cuirass.

Using the 'LightArmor' path, you can assign the DiffuseColor texture of all armored parts.

Using the 'AttackerShiled' path, you can assign the DiffuseColor texture of all shields at once.

To easily identify Golaem entity parts, check the SceneGraphNode -> Full Procedural Names attribute on the Golaem procedural. This allows the engine to record each individual entity and part name and output it in the RenderView and in the OpenEXR/Id Use the P key to drop a Path node in the RenderGraph with the current selection.

Texture variation

The Golaem procedural can assign random values to each entity, such as texture indices. Use the TextureSwitch shader to create variations.

The Files parameter contains a list of textures files, and the Attr parameter contains the name of the Golaem random parameter used as random value.

The TextureSwitch node is connected to the DiffuseColor input of the shader, and uses the MAN_MD_body_textureIdx random value to switch textures.

Color variation

Golaem Crowd also provides random floating point values on each agent, that can be used as random source for simple color variations. Use the RandomizeColor node to randomly shift the Hue, Saturation and Value of the color.

The RandomizeColor node is used to randomly shift the Hue of the DiffuseColor texture, using the hue random value.

Troubleshooting

To troubleshoot Golaem rendering, you can activate the RiCalls diagnostic which will log all communications between the procedural and the renderer. This is helpful to find which shader and shader parameters are provided by the procedural to Guerilla.

In the Passes view, Settings -> Logs & Diagnostics tab

  • Set the Verbosity to Diagnostics
  • Check Diagnostic RiCalls

The RiCalls diagnostic is enabled.